from collections import deque
test_cases = int(input())
def solve():
a, b = input().split(" ")
a = int(a)
b = int(b)
if a == b:
return "0"
if b > a:
a, b = b, a
if (a % 2 != 0 and b % 2 != 0) or a % b != 0:
return "-1"
def bfs():
queue = deque()
queue.append(a)
visited = set()
moves = 0
while len(queue) > 0:
size = len(queue)
for _ in range(size):
value = queue.popleft()
if value == b:
return moves
if value % 8 == 0:
r = value // 8
if r not in visited:
visited.add(r)
queue.append(r)
if value % 4 == 0:
r = value // 4
if r not in visited:
visited.add(r)
queue.append(r)
if value % 2 == 0:
r = value // 2
if r not in visited:
visited.add(r)
queue.append(r)
moves += 1
return -1
return bfs()
for _ in range(test_cases):
print(solve())
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long int t;
cin>>t;
while(t--)
{
long long int n,x;
cin>>n>>x;
long long int a=0,b=0;
while(n%2==0)
{
n=n/2;
a++;
}
while(x%2==0)
{
x=x/2;
b++;
}
if(n==x)
{
cout<<(abs(a-b)+2)/3<<endl;
}
else
{
cout<<"-1"<<endl;
}
}
return 0;
}
43. Multiply Strings | 34. Find First and Last Position of Element in Sorted Array |
33. Search in Rotated Sorted Array | 17. Letter Combinations of a Phone Number |
5. Longest Palindromic Substring | 3. Longest Substring Without Repeating Characters |
1312. Minimum Insertion Steps to Make a String Palindrome | 1092. Shortest Common Supersequence |
1044. Longest Duplicate Substring | 1032. Stream of Characters |
987. Vertical Order Traversal of a Binary Tree | 952. Largest Component Size by Common Factor |
212. Word Search II | 174. Dungeon Game |
127. Word Ladder | 123. Best Time to Buy and Sell Stock III |
85. Maximal Rectangle | 84. Largest Rectangle in Histogram |
60. Permutation Sequence | 42. Trapping Rain Water |
32. Longest Valid Parentheses | Cutting a material |
Bubble Sort | Number of triangles |
AND path in a binary tree | Factorial equations |
Removal of vertices | Happy segments |
Cyclic shifts | Zoos |